草庐IT

C++ 堆损坏

全部标签

c++ - 为什么我们使用内存管理器?

我看到很多代码库特别是服务器代码都有基本的(有时是高级的)内存管理器。内存管理器的真正目的是减少malloc调用的次数还是主要用于内存分析、损坏检查或可能是其他以应用程序为中心的目的。保存malloc调用的论点是否足够合理,因为malloc本身就是一个内存管理器。我可以推断的唯一性能提升是当我们知道系统总是要求相同大小的内存时。或者有内存管理器的原因是free不会将内存返回给OS而是保存在列表中。因此,在进程的生命周期中,如果我们继续执行malloc/free由于碎片化,进程的堆使用量可能会增加。 最佳答案 malloc是一个通用分

c++ - 为什么我们使用内存管理器?

我看到很多代码库特别是服务器代码都有基本的(有时是高级的)内存管理器。内存管理器的真正目的是减少malloc调用的次数还是主要用于内存分析、损坏检查或可能是其他以应用程序为中心的目的。保存malloc调用的论点是否足够合理,因为malloc本身就是一个内存管理器。我可以推断的唯一性能提升是当我们知道系统总是要求相同大小的内存时。或者有内存管理器的原因是free不会将内存返回给OS而是保存在列表中。因此,在进程的生命周期中,如果我们继续执行malloc/free由于碎片化,进程的堆使用量可能会增加。 最佳答案 malloc是一个通用分

c++ - 通过更改 C++ 中的内存来损坏计算机的风险

我知道一些Java,现在正在尝试C++,显然在C++中你可以做一些事情,比如声明一个大小为6的int数组,然后更改该数组的第10个元素,我理解它只是第4个元素为6整数数组分配的内存部分结束后的字节。所以我的问题是,如果我不小心,是否有可能意外更改系统上其他程序正在使用的C++程序中的内存?以这种方式严重搞砸事情是否存在实际风险?我的意思是我知道您可以在必要时重新启动计算机并清除内存,但如果我不这样做,可能会造成一些持久的损害。 最佳答案 这取决于您的系统。形式上,越界访问是未定义的行为。在现代通用系统上,每个用户进程有自己的地址空间

c++ - 通过更改 C++ 中的内存来损坏计算机的风险

我知道一些Java,现在正在尝试C++,显然在C++中你可以做一些事情,比如声明一个大小为6的int数组,然后更改该数组的第10个元素,我理解它只是第4个元素为6整数数组分配的内存部分结束后的字节。所以我的问题是,如果我不小心,是否有可能意外更改系统上其他程序正在使用的C++程序中的内存?以这种方式严重搞砸事情是否存在实际风险?我的意思是我知道您可以在必要时重新启动计算机并清除内存,但如果我不这样做,可能会造成一些持久的损害。 最佳答案 这取决于您的系统。形式上,越界访问是未定义的行为。在现代通用系统上,每个用户进程有自己的地址空间

【排错/运维】修复HDFS丢失、损坏以及副本数的问题

文章目录一.问题描述二.问题分析与解决1.HDFS块损坏1.1.问题表述1.2.问题解决直接删除文件的情况需要文件恢复的情况2.副本同步问题2.1.问题表述2.2.问题解决一.问题描述搭建了一个Hadoop的demo环境,用于一些功能测试,使用了一段时间之后发现flink任务提交不到hadoop上了。查看资源也都充足,查看hdfs后发现文件出现丢失和损坏的情况。此文章用于解决hdfs文件的问题。 二.问题分析与解决1.HDFS块损坏1.1.问题表述执行命令:hdfsfsck/发现文件存在丢失和损坏的情况...../dodb/datalake/jars/110/e24d18b0014183c95

c++ - 什么可以解释调用 free() 时的堆损坏?

我已经调试了几天的崩溃,它发生在OpenSSL的深处(与维护者讨论here)。我花了一些时间进行调查,所以我会尝试让这个问题变得有趣且内容丰富。首先,给出一些上下文,我重现崩溃的最小样本如下:#include#include#include#include#include#includeintmain(){ERR_load_crypto_strings();OpenSSL_add_all_algorithms();ENGINE_load_builtin_engines();EC_GROUP*group=EC_GROUP_new_by_curve_name(NID_sect571k1);

c++ - 什么可以解释调用 free() 时的堆损坏?

我已经调试了几天的崩溃,它发生在OpenSSL的深处(与维护者讨论here)。我花了一些时间进行调查,所以我会尝试让这个问题变得有趣且内容丰富。首先,给出一些上下文,我重现崩溃的最小样本如下:#include#include#include#include#include#includeintmain(){ERR_load_crypto_strings();OpenSSL_add_all_algorithms();ENGINE_load_builtin_engines();EC_GROUP*group=EC_GROUP_new_by_curve_name(NID_sect571k1);

c++ - 'Guaranteed Copy Elision' (P0135, C++1z) 是否可能需要 ABI 损坏?

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0135r0.html2016年6月在芬兰奥卢举行的session上,上述关于“保证复制省略”的提案被投票纳入C++工作文件,然后被投票作为委员会草案发布。希望这会导致明年作为C++17标准发布。该提案阐明了涉及临时对象的各种值类别,以强制在某些用例中不调用复制构造函数。我的问题是“这个新要求可能会破坏以前在这些情况下可能没有进行复制省略的编译器的ABI兼容性,或者以与新要求不兼容的方式实现它?"我正在考虑诸如初始化之类的事情,当对象的创建可以内联时会省略拷贝,但在跨越编译

c++ - 'Guaranteed Copy Elision' (P0135, C++1z) 是否可能需要 ABI 损坏?

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0135r0.html2016年6月在芬兰奥卢举行的session上,上述关于“保证复制省略”的提案被投票纳入C++工作文件,然后被投票作为委员会草案发布。希望这会导致明年作为C++17标准发布。该提案阐明了涉及临时对象的各种值类别,以强制在某些用例中不调用复制构造函数。我的问题是“这个新要求可能会破坏以前在这些情况下可能没有进行复制省略的编译器的ABI兼容性,或者以与新要求不兼容的方式实现它?"我正在考虑诸如初始化之类的事情,当对象的创建可以内联时会省略拷贝,但在跨越编译

c++ - 跟踪生产 Linux 服务器上的内存损坏

伙计们,您能否推荐一个用于在使用c++构建并在linuxx86_64下工作的生产多线程服务器上发现内存损坏的工具?我目前面临以下问题:每隔几个小时,我的服务器就会因段错误而崩溃,核心转储显示malloc/calloc中发生错误,这绝对是某处内存损坏的迹象。实际上我已经尝试了一些工具,但运气不佳。以下是我目前的经验:Valgrind是一个很棒的(我什至会说是最好的)工具,但它会大大降低服务器速度,使其无法在生产中使用。我在舞台服务器上尝试过,它确实帮助我找到了一些与内存相关的问题,但即使在修复它们之后,我仍然会在生产服务器上崩溃。我在Valgrind下运行了我的舞台服务器几个小时,但仍然